// vue
    // 1、组件的通信方式
        // 1、属性
        // 2、$emit触发自定义事件
        // 3、ref
        // 4、eventBus
        // 5、$parent $root
        // 6、attrs和listeners
        // 7、provide inject
        // 8、vuex
    // 2、v-show和v-if
    // 3、为什么Vue中的v-if和v-for不建议一起用?
    // 4、Vue中的$nextTick怎么理解?
    // 5、Vue中给对象添加新属性界面不刷新?
    // vue2和vue3
        // defineProperty
        // proxy
        // 问题
            // 1$delete $set
            // 2数组下标改变
// react
// 移动端的开发能力H5 flutter
// 1、数组常用的方法
// 2、防抖和节流
    // 1、把这个场景描述出来
// 3、typeof 和 instanceof
// 4、this
// 5、浅拷贝和深拷贝
    // 1、浅拷贝
        // 1、扩展运算符
        // 2、Object.assign
    // 2、深拷贝
// 6、es6新增哪些扩展
    // 1、扩展运算符
    // 2、Set和 Map 和 Symbol
        // 1、Set
            // 1、add、delete、has、clear
            // 2、forEach、for of
            // 3、属性size
            // new Set([1, 2, 3]);
        // 1、2 WeakSet
            // 1、没有遍历操作api
            // 2、没有size属性，和clear方法
            // 3、成员只能是引用类型
        // 2、Map
            // 1、set、get、delete、has、clear
            // 2、forEach、for of
            // 3、属性size
            // new Map([
            //     ['F', 'no'],
            //     ['T',  'yes'],
            // ]);
        // 2、2 WeakMap
            // 1、没有遍历操作api
            // 2、没有size属性，和clear方法
            // 3、只能接受对象作为键名
    // 3、构造函数新增的方法
        // Array.from([1, 2, 3], (x) => x * x)  //将数组转换成对象
        // Array.of(3, 11, 8) // [3,11,8] //将一组值转换成数组
    // 4、实例对象新增的方法
        // copyWithin()
        // find()、findIndex()
        // fill()
        // entries()、keys()、values()
        // includes()
        // flat() flatMap()
        // sort()
    // 5、属性简写
    // 6、属性表达式
        // const a = {
        //     'first word': 'hello',
        //     [lastWord]: 'world'
        // };
    // 7、属性遍历
        // for...in
        // Object.keys(obj)
        // Object.getOwnPropertyNames(obj)
        // Object.getOwnPropertySymbols(obj)
        // Reflect.ownKeys(obj)
    // 8、对象新增的方法
        // Object.is()
        // Object.assign()
        // Object.getOwnPropertyDescriptors()
        // Object.setPrototypeOf()
        // Object.getPrototypeOf()
        // Object.keys()
        // Object.values()
        // Object.entries()
        // Object.fromEntries() // 将键值对数组转换成对象
    // generator
    // proxy
        // reflect
// 7其他
    // JS hasOwnProperty()方法：检测一个属性是否是对象的自有属性
    // 有哪个语法是循环自有的属性？
    // 取消请求？
// nodejs 微前端
// 项目管理和团队管理
// 加班及出差的要求
// 表达能力
// 英语
// 问题
    // export const msg = 'hello'
    // export const {}
    // import
    //     module.exports = {}
    // exports = {}
    // require
    // react-saga
// Jest
    // test
    // expect预期
    // toBe期望值 和 === 一样
    // toEqual 和 == 一样
    // toBeNull 和 null
    // toBeUndifined 和 undifined
    // toBeDefined
    // toBeTruthy true
    // toBeFalsy false
    // toBeGreaterThan >
    // toBeLessThan <
    // toBeGreaterOrEqual >=
    // toBeCloseTo 接近0.1+ 0.2
    // toMatch 匹配字符串
    // toContain 匹配数组 ['1', '2'].toContain('1')
    // toThrow 匹配异常(技术胖 jest匹配下)
    // not.toThrow取反
    // // 测试异步
    // fetchData((data) => {
    //     expect(data).toEqual({
    //         success: true
    //     })
    //     done()
    // })
    // 异步 promise 加上return 或await的测试
    // 钩子函数 beforeAll afterAll beforeEach afterEach
    // describe 分组
    // expect.assertions(1) 必须执行一次expect
    // npx = 在packag.json里面写配置(npx 和 npm)
    // npx jest --init // 初始化jest配置
    // npx jest --coverage // 查看覆盖率
    // npx jest --watchAll // 监控文件变化
